package emitter

//type SymbolAccessiblityResult struct {
//	Accessibility        SymbolAccessibility
//	ErrorSymbolName      string               // Optional symbol name that results in error 导致错误的可选符号名称
//	ErrorModuleName      string               // If the symbol is not visible from module, module's name 如果从模块看不到该符号，则为模块名称
//	AliasesToMakeVisible []*ImportDeclaration // aliases that need to have this symbol visible 需要使该符号可见的别名
//}


//type Program interface {
//	GetProgram() Program
//	GetLocalNameOfContainer(container *Declaration) string
//	GetExpressionNamePrefix(node *Identifier) string
//	GetPropertyAccessSubstitution(node *PropertyAccessExpression) string
//	GetExportAssignmentName(node *SourceFile) string
//	IsReferencedImportDeclaration(node *ImportDeclaration) bool
//	IsTopLevelValueImportedViaEntityName(node *ImportDeclaration) bool
//	GetNodeCheckFlags(node *Node) NodeCheckFlags
//	GetEnumMemberValue(node *EnumMember) interface{}
//	ShouldEmitDeclarations() bool
//	IsDeclarationVisible(node *Node) bool
//	IsImplementationOfOverload(node *FunctionLikeDeclaration) bool
//	WriteTypeAtLocation(location *Node, enclosingDeclaration *Node, flags TypeFormatFlags, writer TextWriter)
//	WriteReturnTypeOfSignatureDeclaration(signatureDeclaration *SignatureDeclaration, enclosingDeclaration *Node, flags TypeFormatFlags, writer TextWriter)
//	WriteSymbol(symbol *Symbol, enclosingDeclaration *Node, meaning SymbolFlags, writer TextWriter)
//	IsSymbolAccessible(symbol *Symbol, enclosingDeclaration *Node, meaning SymbolFlags) *SymbolAccessiblityResult
//	IsImportDeclarationEntityNameReferenceDeclarationVisibile(entityName *EntityName) *SymbolAccessiblityResult
//}



